﻿@using KPIS.GERP.SERVICE.Model
@model IEnumerable<KPIS.GERP.SERVICE.Model.rule_approve>
@{
    ViewBag.Title = "กฎอนุมัติ";
    List<hrm_ps_employees> emps = (ViewBag.emp as hrm_ps_employees[]).ToList();
    var ruleApproveGroups = (ViewBag.ruleApproveGroups as rule_approve_group[]).ToList();
    var ruleApproveTypes = (ViewBag.ruleApproveTypes as rule_approve_type[]).ToList();
    var users = (ViewBag.user as sys_sc_users[]).ToList();
}

@using (Html.BeginForm("DeleteAll", "ApprovalTask", FormMethod.Post, new {@id="form"}))
{
    @Html.AntiForgeryToken()
    <div class="row-fluid"> 
        @Html.ValidationSummary(true, "", new {@class = "alert alert-error"})
        <div class="row-fluid">
            <div class="table-header span12">
                <div class="span10">
                    @ViewBag.Title
                </div>
                @Html.Partial("_ExportButton")
            </div>
        </div>

        <table id="table" class="table table-striped table-bordered table-hover" aria-describedby="table_info">
            <thead>
                <tr> 
                    <th colspan="2">กฎอนุมัติ</th>
                    <th>ประเภทการอนุมัติ</th>
                    <th>ประเภทผู้อนุมัติ</th>
                    <th>ขั้นตอนที่</th>  
                    <th>ผู้อนุมัติ</th>
                    <th>ตำแหน่ง</th>
                    <th>ชื่อ</th>
                    <th>UserName</th>
                    @*<th>
						รายละเอียด
					</th> *@
                </tr>
            </thead>
            <tbody>
        
                @foreach (var ruleApproveGroup in ruleApproveGroups)
                {
                    var ruleAppTypeThis = (from rt in ruleApproveTypes where rt.rule_approve_group_seq == ruleApproveGroup.rule_approve_group_seq select rt).ToList();

                    <tr> 
                        <td colspan="9">
                            <h5><b>กลุ่มการอนุมัติ @ruleApproveGroup.rule_approve_group_name (@ruleAppTypeThis.Count ประเภท)</b></h5>
                        </td>
                    </tr>

                    int i = 1;

                    foreach (rule_approve_type ruleApproveType in ruleAppTypeThis)
                    {
                        var firstRuleApprove = ruleAppTypeThis.FirstOrDefault(o => true);
                        var ruleAppThis = (from r in Model where r.rule_approve_type_seq == ruleApproveType.rule_approve_type_seq select r).ToList();

                        <tr><td colspan="9">&nbsp;&nbsp;@(i++) &nbsp;ประเภทการอนุมัติ @(ruleApproveType != null ? ruleApproveType.rule_approve_type_name : "-") (@ruleAppThis.Count() ขั้นตอน)</td></tr>

                        foreach (rule_approve r in ruleAppThis)
                        {
                            hrm_ps_employees empObj = null;
                            sys_sc_users user = null;
                            string emp_name = "?";
                            string pos_name = "?";
                            string user_name = "";
                            if (r.approver_type == "1")
                            {
                                emp_name = null;
                                pos_name = "<span style='color:red'>คำนวนจากตอนสร้างคำขอ</span>";
                                user = null;
                                user_name = "";
                            }
                            else if (r.approver_type == "2")
                            {
                                empObj = (from emp in emps where emp.pos_seq == r.approver_seq select emp).FirstOrDefault();
                                emp_name = empObj == null ? "-" : empObj.full_name;
                                pos_name = empObj != null && empObj.hrm_mp_positions != null ? empObj.hrm_mp_positions.pos_name : "<span style='color:red'>เลขอ้างอิงอ้างถึงตำแหน่งที่ไม่มี</span>";
                                user = (from u in users where empObj != null && empObj.emp_seq == u.emp_seq select u).FirstOrDefault();
                                user_name = user == null ? "<span style='color:red'>ไม่สามารถดึงข้อมูลผู้ใช้ระบบ</span>" : user.user_code;
                            }


                            <tr>
                                <td> 
                                    <span style="visibility: collapse"> (@r.rule_approve_seq)</span>
                                </td>
                                <td> 
                                    <span style="visibility: collapse"> @r.rule_approve_type_seq</span>
                                </td>  
                                <td>
                                    @(r.rule_approve_type != null ? r.rule_approve_type.rule_approve_type_name : "-")
                                </td>
                                <td>  
                                    @switch (r.approver_type)
                                    {
                                            // (1 = หัวหน้า, 2 = ตำแหน่ง, 3 สังกัด, 4, กลุ่ม)
                                        case "1":
                                            @Html.Raw("โดยหัวหน้าของผู้สร้างคำขอ")
                                            break;
                                        case "2":
                                            @Html.Raw("ระบุตำแหน่ง")
                                            break;
                                        case "3":
                                            @Html.Raw("กระจายให้หน่วยงาน")
                                            break;
                                        case "4":
                                            @Html.Raw("กระจายให้กลุ่มของผู้ใช้")
                                            break;
                                        default:
                                            @Html.Raw(string.Format("ไม่ทราบเคส \"{0}\"", r.approver_type))
                                            break;
                                    }
                                </td>
                                <td> 
                                    @r.step
                                </td>
                                <td> 
                                    @(!r.approver_seq.HasValue || r.approver_seq.Value == 0 ? "-" : r.approver_seq.ToString())
                                </td>
                                <td> 
                                    @Html.Raw(pos_name)
                                </td>
                                <td> 
                                    @emp_name
                                </td>
                                <td> 
                                    @Html.Raw(user_name)
                                </td>
                            </tr>
                        }
                    }
                }
            </tbody>
        </table>
    </div>
}